﻿
#ifndef GamePadThumbSticks_h
#define GamePadThumbSticks_h

#include <Riccsson/Xna/Framework/Vector2.h>

namespace Riccsson
{
	namespace Xna
	{
		namespace Framework
		{
			namespace Input
			{
				// Summary:
				//     Structure that represents the position of left and right sticks (thumbsticks)
				//     on an Xbox 360 Controller.
				struct GamePadThumbSticks : public Riccsson::System::object
				{
					
					PROP3GET(GamePadThumbSticks, Vector2, Left);
					PROP3GET(GamePadThumbSticks, Vector2, Right);
					
					COPY_CONSTRUCTOR(GamePadThumbSticks)
					{
						PROP3GET_INIT_COPY(GamePadThumbSticks, Vector2, Left);
						PROP3GET_INIT_COPY(GamePadThumbSticks, Vector2, Right);
					}

					public: GamePadThumbSticks()
						: PROP3GET_INIT(GamePadThumbSticks, Left)
						, PROP3GET_INIT(GamePadThumbSticks, Right)
					{
					}

					//
					// Summary:
					//     Initializes a new instance of the GamePadThumbSticks class.
					//
					// Parameters:
					//   leftThumbstick:
					//     Left stick value. Each axis is clamped between −1.0 and 1.0.
					//
					//   rightThumbstick:
					//     Right stick value. Each axis is clamped between −1.0 and 1.0.
					public: GamePadThumbSticks(Vector2 leftThumbstick, Vector2 rightThumbstick)
						: PROP3GET_INIT(GamePadThumbSticks, Left)
						, PROP3GET_INIT(GamePadThumbSticks, Right)
					{
						throw;
					}

					// Summary:
					//     Returns the position of the left Xbox 360 Controller stick (thumbstick) as
					//     a 2D vector. Reference page contains code sample.
					public: PROP3_GET(Vector2, Left)
					{
						throw;
					}
					//
					// Summary:
					//     Returns the position of the right Xbox 360 Controller stick (thumbstick)
					//     as a 2D vector.
					public: PROP3_GET(Vector2, Right)
					{
						throw;
					}

					// Summary:
					//     Returns a value that indicates whether the current instance is equal to a
					//     specified object.
					//
					// Parameters:
					//   obj:
					//     Object with which to make the comparison.
					public: override bool Equals(Riccsson::System::object* obj)
					{
						throw;
					}
					//
					// Summary:
					//     Gets the hash code for this instance.
					public: override int GetHashCode()
					{
						throw;
					}
					//
					// Summary:
					//     Retrieves a string representation of this object.
					public: override GC_PTR<Riccsson::System::string> ToString()
					{
						throw;
					}
				};

				
				// Summary:
				//     Determines whether two GamePadThumbSticks instances are not equal.
				//
				// Parameters:
				//   left:
				//     Object on the left of the equal sign.
				//
				//   right:
				//     Object on the right of the equal sign.
				static bool operator !=(GamePadThumbSticks left, GamePadThumbSticks right)
				{
					throw;
				}
				//
				// Summary:
				//     Determines whether two GamePadThumbSticks instances are equal.
				//
				// Parameters:
				//   left:
				//     Object on the left of the equal sign.
				//
				//   right:
				//     Object on the right of the equal sign.
				static bool operator ==(GamePadThumbSticks left, GamePadThumbSticks right)
				{
					throw;
				}

			}
		}
	}
}

#endif